revision:










code:
<div class="container">Select:
<ul class="filter-menu">
<li data-target="all">All</li>
<li data-target="male">Male</li>
<li data-target="female">Female</li>
<li data-target="car">Car</li>
</ul>
<ul class="filter-item">
<li data-item="male"><img src="../images/einstein.jpg" alt=""></li>
<li data-item="male"><img src="../images/tesla.jpg" alt=""></li>
<li data-item="female"><img src="../images/4a.jpg" alt=""></li>
<li data-item="female"><img src="../images/cartoon.jpg" alt=""></li>
<li data-item="car"><img src="../images/car1.jpg" alt=""></li>
<li data-item="car"><img src="../images/car2.jpg" alt=""></li>
<li data-item="car"><img src="../images/19.jpg" alt=""></li>
<li data-item="car"><img src="../images/17.jpg" alt=""></li>
<li data-item="male"><img src="../images/hemingway.jpg" alt=""></li>
<li data-item="male"><img src="../images/malcom-x.jpg" alt=""></li>
</ul>
</div>
<style>
ul{list-style: none;}
.filter-item img{max-width: 100%;height: auto;}
.container{max-width: 99vw; margin: auto; padding: 1vw; text-align: left;}
.filter-menu{margin-bottom: 20px;}
.filter-menu li{display: inline-block; padding: 10px 18px; background: #eb4d4b; color: #fff; cursor: pointer;}
.filter-menu li:hover, .filter-menu li.current{ background: #ff7979;}
.filter-item{display: flex; flex-flow: row wrap;}
.filter-item li{ width: 25%; padding: 2px; float: left;}
.filter-item li.active{width: 50%; padding: 2px; transition: all 0.5s ease;}
.filter-item li.delete{width: 0%; padding: 0; transition: all 0.5s ease;}
.filter-item img{display: block; width: 100%; height: auto;}
@media screen and (min-width: 768px){
.filter-item li.active, .filter-item li{ width: 33.33%; }
h2{font-size: 190%;}
}
@media screen and (min-width: 1280px){
.filter-item li.active, .filter-item li{width: 25%;}
h2{font-size: 270%;}
}
</style>
<script>
let sortBtn = document.querySelector('.filter-menu').children;
let sortItem = document.querySelector('.filter-item').children;
for(let i = 0; i < sortBtn.length; i++){
sortBtn[i].addEventListener('click', function(){
for(let j = 0; j< sortBtn.length; j++){
sortBtn[j].classList.remove('current');
}
this.classList.add('current');
let targetData = this.getAttribute('data-target');
for(let k = 0; k < sortItem.length; k++){
sortItem[k].classList.remove('active');
sortItem[k].classList.add('delete');
if(sortItem[k].getAttribute('data-item') == targetData || targetData == "all"){
sortItem[k].classList.remove('delete');
sortItem[k].classList.add('active');
}
}
});
}
</script>